// 定义抽象接口
interface DataStorage {
void save(String data);
}
// 低层模块实现接口
class DatabaseService implements DataStorage {
@Override
public void save(String data) {
System.out.println("Saving data to database: " + data);
}
}
// 另一个低层模块实现接口
class FileService implements DataStorage {
@Override
public void save(String data) {
System.out.println("Saving data to file: " + data);
}
}
// 高层模块依赖抽象
class BusinessLogic {
private DataStorage dataStorage;
// 通过构造函数注入依赖
public BusinessLogic(DataStorage dataStorage) {
this.dataStorage = dataStorage;
}
void processData(String data) {
// 业务逻辑
dataStorage.save(data); // 依赖抽象,而不是具体实现
}
}
// 使用
public class Main {
public static void main(String[] args) {
DataStorage databaseService = new DatabaseService();
DataStorage fileService = new FileService();
BusinessLogic logic1 = new BusinessLogic(databaseService);
logic1.processData("Data 1"); // 输出: Saving data to database: Data 1
BusinessLogic logic2 = new BusinessLogic(fileService);
logic2.processData("Data 2"); // 输出: Saving data to file: Data 2
}
}
共有 0 - 依赖倒置原则(Dependency Inversion Principle DIP)